package moviles.mundo;

import java.util.ArrayList;

import android.text.Editable;
public class Comprap {
	private static Comprap instancia;	
	
	private ArrayList<Categoria> categoriasProductos;
	private ArrayList<String> categoriasString;
	
	private ArrayList<Categoria> categoriasServicios;
	private ArrayList<String> categoriasServiciosString;
	
	private Cliente cliente;	
	private ArrayList<String> listasString;	
	private ArrayList<Lista> listas;	
	private ArrayList<Tienda> tiendas;
		
	public Comprap() {super();		
		categoriasProductos = new ArrayList<Categoria>();
		categoriasServicios = new ArrayList<Categoria>();
		cliente = new Cliente("nombre", "apellido","ejemplo@gmail.com", 1, 20, null, null, "", null,'M');
		categoriasString = new ArrayList<String>();
		categoriasServiciosString = new ArrayList<String>();
		listasString = new ArrayList<String>();
		listas = new ArrayList<Lista>();
		tiendas = new ArrayList<Tienda>();
		
		//prueba	
		
		Lista lista = new Lista(new ArrayList(), new ArrayList(), "10", "Lista 1");  //lista por default
		Lista lista2 = new Lista(new ArrayList(), new ArrayList(), "12", "<Crear Lista>");  //opcion de agregar nueva lista
		listas.add(lista);
		listas.add(lista2);
		
		Categoria cat1 = new Categoria("Todos", 1);
		Categoria cat2 = new Categoria("Lacteos", 2);
		Categoria cat3 = new Categoria("Aseo", 3);
		
		Categoria cat4 = new Categoria("Todos", 4);
		Categoria cat5 = new Categoria("Hogar", 5);
		Categoria cat6 = new Categoria("Belleza", 6);
		
		categoriasServicios.add(cat4);
		categoriasServicios.add(cat5);
		categoriasServicios.add(cat6);
		
		categoriasProductos.add(cat1);
		categoriasProductos.add(cat2);
		categoriasProductos.add(cat3);
		
		Producto prod1 = new Producto("leche",1,1000,new ArrayList<Categoria>(),"leche entera alqueria");
		prod1.setImagen("ic_producto_001");
		Producto prod2 = new Producto("Cepillo Dientes",2,2000,new ArrayList<Categoria>(),"Cepillo de dientes Colgate");
		prod2.setImagen("ic_producto_002");
		Producto prod3 = new Producto("Queso Alpina",3,3000,new ArrayList<Categoria>(),"Queso alpina");
		prod3.setImagen("ic_producto_003");
		
		cat1.agregarProducto(prod1);
		cat1.agregarProducto(prod2);
		cat1.agregarProducto(prod3);
		cat2.agregarProducto(prod1);
		cat2.agregarProducto(prod3);
		cat3.agregarProducto(prod2);
		
		ArrayList<Producto> prods = new ArrayList<Producto>();
		prods.add(prod1);
		prods.add(prod2);	
		prods.add(prod3);
			
		Ubicacion ub1 = new Ubicacion("Calle 127D 19-45",1);
		Ubicacion ub2 = new Ubicacion("Cr 11 84-09",2);
		ArrayList<Ubicacion> ubs1 = new ArrayList<Ubicacion>();
		ArrayList<Ubicacion> ubs2 = new ArrayList<Ubicacion>();
		ubs1.add(ub1);
		ubs2.add(ub2);
		
		Servicio serv1 = new Servicio("Lavanderia", 1, 10000,new ArrayList<Categoria>(),"Servicio de lavanderia");
		Servicio serv2 = new Servicio("Peluqueria", 2, 5000, new ArrayList<Categoria>(),"Servicio de Zapateria");
		cat4.agregarServicio(serv1);
		cat4.agregarServicio(serv2);
		cat5.agregarServicio(serv1);
		cat6.agregarServicio(serv2);
		
		Tienda tienda = new Tienda("Tienda 1", 1, ubs1,prods,cat4.getServicios(), null);
		Tienda tienda2 = new Tienda("Tienda 2", 2, ubs2,prods,cat4.getServicios(), null);
		tiendas.add(tienda);
		tiendas.add(tienda2);		
		
		
	}
	
	
	public static Comprap darInstancia() {
		if(instancia == null) {
			instancia = new Comprap();
		}
		return instancia;
	}
	
	public ArrayList<Categoria> getCategorias() {
		return categoriasProductos;
	}
	
	
	public ArrayList<String> getCategoriasToString()
	{	categoriasString = new ArrayList<String>();
		for (int i = 0; i < categoriasProductos.size(); i++) {
			categoriasString.add(categoriasProductos.get(i).getNombreCategoria());
		}return categoriasString;
	}
	
	public ArrayList<String> getListasToString()
	{	listasString = new ArrayList<String>();
		for (int i = 0; i < listas.size(); i++) {
			listasString .add(listas.get(i).getNombre());
		}return listasString ;
	}
	
	public ArrayList<String> getCategoriasServiciosToString()
	{	categoriasServiciosString = new ArrayList<String>();
		for (int i = 0; i < categoriasServicios.size(); i++) {
			categoriasServiciosString.add(categoriasServicios.get(i).getNombreCategoria());
		}return categoriasServiciosString ;
	}
	
	
	public void setCategorias(ArrayList<Categoria> categorias) {
		this.categoriasProductos = categorias;
	}
	public Categoria buscarCategoria(String selectedItem) {
		for (int i = 0; i < categoriasProductos.size(); i++) {
			if (categoriasProductos.get(i).getNombreCategoria().equals(selectedItem))
				return categoriasProductos.get(i);
		}
		return null;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public ArrayList<String> getCategoriasString() {
		return categoriasString;
	}
	public void setCategoriasString(ArrayList<String> categoriasString) {
		this.categoriasString = categoriasString;
	}
	public ArrayList<Lista> getListas() {
		return listas;
	}
	public void setListas(ArrayList<Lista> listas) {
		this.listas = listas;
	}
	
	public ArrayList<Categoria> getCategoriasServicios() {
		return categoriasServicios;
	}


	public void setCategoriasServicios(ArrayList<Categoria> categoriasServicios) {
		this.categoriasServicios = categoriasServicios;
	}

	public void setCategoriasServiciosString(
			ArrayList<String> categoriasServiciosString) {
		this.categoriasServiciosString = categoriasServiciosString;
	}


	public ArrayList<Tienda> getTiendas() {
		return tiendas;
	}

	public void setTiendas(ArrayList<Tienda> tiendas) {
		this.tiendas = tiendas;
	}
	public void createLista(String text){
		listas.add(0,new Lista(new ArrayList(),new ArrayList(),"12",text));	
	}

	
	public Lista buscarLista(String lista)
	{	for (int i = 0; i < listas.size(); i++) {
			if (listas.get(i).getNombre().equals(lista))
				return listas.get(i);
		}
		return null;}

	public void agregarProducto(String object, Producto object2,int cantidad, Tienda tienda) {
		ItemProductoLista produ = new ItemProductoLista(object2, cantidad, object2.getPrecio(),object2.getPrecio()*cantidad, tienda);
		buscarLista(object).agregarProducto(produ);
	}


	public ArrayList<Tienda> darTiendasDeProducto(Producto product) {
		ArrayList<Tienda> array = new ArrayList<Tienda>();
		for (int i = 0; i < tiendas.size()	; i++) {
			ArrayList<Producto> prods = tiendas.get(i).getProductos();
			for (int j = 0; j < prods.size(); j++) {
				if(product.getIdProducto()==prods.get(j).getIdProducto())
				{					array.add(tiendas.get(i));}
			}
		}	
		return array;
	}
	
	public ArrayList<Tienda> darTiendasDeServicio(Servicio serv) {
		ArrayList<Tienda> array = new ArrayList<Tienda>();
		for (int i = 0; i < tiendas.size()	; i++) {
			ArrayList<Servicio> servs = tiendas.get(i).getServicios();
			for (int j = 0; j < servs.size(); j++) {
				if(serv.getIdServicio()==servs.get(j).getIdServicio())
				{					array.add(tiendas.get(i));}
			}
		}	
		return array;
	}
	

	public void agregarServicio(String listaSelected, Servicio service,
			int cantidad, Tienda tienda) {
		ItemServicioLista serv = new ItemServicioLista(service, cantidad, service.getPrecio(),service.getPrecio()*cantidad, tienda);
		buscarLista(listaSelected).agregarServicio(serv);
		
	}


	public Categoria buscarCategoriaServicio(String selectedItem) {
		for (int i = 0; i < categoriasServicios.size(); i++) {
			if (categoriasServicios.get(i).getNombreCategoria().equals(selectedItem))
				return categoriasServicios.get(i);
		}
		return null;
	}


	public void removeProductoLista(Lista listaseleccionada,
			ItemProductoLista itemProd) {
		listaseleccionada.removeProducto(itemProd);
		
	}


	public void removeServicioLista(Lista listaseleccionada,
			ItemServicioLista itemSer) {
		listaseleccionada.removeServicio(itemSer);		
	}	
}
